# 修改元组元素
tuple1 = [12, 34, 56]
tuple2 = ["abc", "mn"]
# 修改元组元素操作是非法的
tuple1[0] = 100
tuple2[0] = 200
# 连接元组创建一个新的元组，两个数据必须都是元组
tuple3 = tuple1 + tuple2
print(tuple3)
# 删除元组，用关键字del
t1 = (1, 2, 3, 4)
# 任务一
# 使用input方法输入联系人姓名，电话，邮件，地址：
# 定义元组tuple1存储以上信息
# 输出tuple1
name = input("请输入添加的联系人姓名：")
telephone = input("请输入13位电话号码：")
email = input("请输入邮箱地址：")
address = input("请输入联系地址：")
tuple1 = ("姓名：", name, "电话：", telephone, "邮箱:", email, "地址:", address)
print(tuple1)
# "列表list“
# 创建列表
list1 = [1, "hello", 2, "c语言"]
print(list1)
print(type(list1))
# 创建空列表
list2 = []
print(list2)
# 转化字符串
l3 = list("hello")
print(l3)
# 转化元组
tuple1 = "hello"
l4 = list(tuple1)
print(l4)
# 转化range函数
r1 = range(5)
print(r1)
l5 = list(r1)
print(l5)
# 访问列表中的元素
# 使用索引访问元素实例：
# 使用索引访问列表中的某个元素
l1 = ["p", "y", "t", "y", "h", "o", "n"]
# 使用正数索引进行访问
print(l1[4])
# 使用负数索引进行访问
print(l1[-2])

# 使用切片访问元素格式
list1 = ["p", "y", "t", "y", "h", "o", "n"]
# 使用正数切片，截取索引为2,3,4的元素，默认步长为1
print(list1[2:5])
print(list1[:3])  # 截取索引为0-2的元素，起始索引默认为0
# 截取索引为3-5的元素，结束索引默认为最后一个元素
print(list1[3:])
# 使用正数切片，截取索引为1-5的元素，步长为2
print(list1[1:6:2])
print(list1[-3:-1])
# 步长如果是负数，即从右向左提取元素
print(list1[::-1])
# 使用切片形式访问列表中的元素
l2 = ["p", "u", 1, 2, 3]
# 遍历列表
list1 = ["python", "java", "c"]
# 使用for循环遍历列表
l3 = ["python", "java", "c", "c++", "r"]
for i in l3:
    print(i)
# 修改列表元素
# 修改单个元素
l4 = [10, 58, 78, 89, 44, 7]
# 将索引为2的元素值修改为100
l4[2] = 100
print(l4)
# 修改多个元素
l5 = [10, 58, 78, 89, 44, 7]
# 修改第1-4个元素的值（不包括第四个）
l5[1:4] = [45, -56, 98]
print(l5)
# 在列表末尾添加多个元素
l6 = ["a", "b", "c"]
l6.extend("d")
print(l6)

# 在列表末尾追加元素
l7 = ["d", "e", "f"]
l7.extend("f")
print(l7)

# 在列表特定位置插入元素
l8 = ["python", "c", "java"]
l8.insert(2, "go")
print(l8)

# 删除元素
l9 = [1, 2, 3, 4, 5]
l9.remove(5)
print(l9)
# pop
l10 = [3, 45, 67, 89, 60]
l10.pop(4)
print(l10)
# 删除最后一个元素
l11 = [4, 56, 78, 0, 77]
l11.pop()
print(l11)
# del可以用来删除列表中单个元素或一段连续的元素
l12 = [1, 2, 3, 4, 5, 6]
del l12[1]
print(l12)
l13 = [2, 6, 7, 8, 9, 10]
del l13[1:4]
print(l13)
# 清空列表clear
l14 = [1, 2, 3, 4, 5, 6]
l14.clear()
print(l14)
# 任务
name_list = []
phone_list = []
while 1:
    print("菜单: 1.联系人 2.修改联系人 3.删除联系人")
    choice = input("请输入选择：")
    # 1.添加联系人，包括姓名，手机
    if choice == "1":
        name_list.append(input("请输入联系人姓名："))
        phone_list.append(input("请输入联系人手机号："))
        print(name_list)
        print(phone_list)
    # 2.修改联系人信息
    elif choice == "2":
        num = int(input("请输入联系人编号："))
        if len(name_list) > 0 and num <= len(name_list):
            name_list[num - 1] = input("修改联系人姓名：")
            phone_list[num - 1] = input("修改联系电话：")
        else:
            print("联系人编号输入有错误:")
    # 3.删除联系人信息
    elif choice == "3":
        num = int(input("请输入联系人编号："))
        if len(name_list) > 0 and num <= len(name_list):
            name_list.pop(num - 1)
            phone_list.pop(num - 1)
        else:
            print("联系人编号输入有错误:")
    else:
        print("显示联系人信息")
        print(name_list)
        print(phone_list)
# 查找元素index（）列表名
ls1 = [2, 3, 4, 5, 8, "a", "b"]
print(ls1.index(3))
print(ls1.index("b", 4))
print(ls1.index("a", 8))
print(ls1.index(12))  # 错误注释
# count()用来统计元素出现次数
ls2 = [2, 2, 1, 1, "a", "b", "c", "c"]
print(ls2.count(2))
print(ls2.count(1))
print(ls2.count(0))
# 元素排列sort（）
# 数值的排序
ls3 = [1, 3, 56, 78, 90, 455, 78]
# 默认升序
ls3.sort()
print(ls3)
# 降序reverse=True
ls3.sort(reverse=True)
print(ls3)
# 字符串排序
ls4 = ["1", "34", "90", "25", "89"]
ls4.sort()
print(ls4)
ls4.sort(reverse=True)
print(ls4)
# 字典
# 使用字符串
d1 = {"python": 90, "可视化": 89, "英语": 85}
print(type(d1))
# 使用元组和数字
d2 = {(23, 89): "great", 30: [1, 3, 4]}
print(type(d2))
# 创建空元组
d3 = {}
print(d3)
# 用dict（）方法通过关键字参数来创建
d4 = dict(数学=98, 语文=87, 英语=89)
print(d4)
